Оператор distintUntillChange

Оператор distinctUntilChanged позволяет фильтровать последовательность значений Observable и эмитить только уникальные значения. Он игнорирует повторяющиеся значения, эмитируя только те, которые отличаются от предыдущего эмита.

Давайте рассмотрим пример кода и разберем его шаг за шагом:

import { of } from 'rxjs';
import { distinctUntilChanged } from 'rxjs/operators';

// Создаем Observable, который эмитит значения
const source$ = of(1, 1, 2, 2, 3, 1, 4, 4, 5);

// Применяем оператор distinctUntilChanged
const result$ = source$.pipe(distinctUntilChanged());

// Подписываемся на результат
result$.subscribe(result => console.log(result));

В этом примере у нас есть Observable source$, который эмитит значения 1, 1, 2, 2, 3, 1, 4, 4, 5. Мы применяем оператор distinctUntilChanged к этому Observable.

Результатом подписки на result$ будет вывод уникальных значений: 1, 2, 3, 1, 4, 5.

Оператор distinctUntilChanged сравнивает текущее значение со значением, которое было эмитировано предыдущими эмитами. Если значения совпадают, то оно игнорируется и не эмитится в итоговый поток. Только когда значение отличается от предыдущего, оно будет эмитировано в итоговый поток.

В нашем примере, когда первое значение 1 приходит, оно эмитируется. Затем, когда второе значение также равно 1, оно игнорируется. Затем, когда приходит значение 2, оно эмитируется, так как отличается от предыдущего значения 1. И так далее.

Оператор distinctUntilChanged полезен, когда вам нужно получить только уникальные значения из Observable и игнорировать повторяющиеся значения.